Virtualization is a widely used technique in network communication and has become a part of an overall trend in enterprise information technology. In general, virtualization provides a layer of abstraction between computer hardware systems and the software running on them. This allows hardware resources, such as processors, memory, I/O, and storage devices, to be divided into multiple sets that operate independently with its own system image instance and applications (e.g., a software component such as an operating system).
As well known in the art, PCI is a long existing standard for attaching peripheral devices to a computer. Typically, one computer can have multiple peripheral devices attached to it. The Peripheral Component Interconnect Special Interest Group (PCI-SIG), a standard body responsible for specifying the PCI, PCI-X, and PCI Express® (PCIe) computer buses, has adapted a new PCI-IOV (input/output virtualization) standard to facilitate I/O virtualization over PCI. The main goal of input/output virtualization is to allow multiple computers to be able to share a single I/O device, thereby saving cost and improving efficiency. Two specifications, one for single root IOV and another for multi-root IOV are provided by PCI-SIG. The single root IOV specification provides native I/O virtualization in existing PCIe topologies where there is a single root complex. The multi-root IOV specification builds on the single root IOV specification to provide native I/O virtualization in new topologies (such as blade servers) where multiple root complexes share a PCIe hierarchy. A copy of the IOV specifications is available on PCI-SIG's website. These PCI-SIG I/O Virtualization (IOV) specifications, in conjunction with system virtualization technologies, allow multiple operating systems running simultaneously within a single computer to natively share PCIe devices.
However, many existing network devices are not compliant with the new PCI-IOV standard. Currently, there is no available PCI-IOV adapters designed for enabling virtualization on an existing non-virtualized device.